package com.yeung.swordoffer;

import java.util.ArrayList;

/**
 * 把只包含质因子2、3和5的数称作丑数（Ugly Number）。
 * 例如6、8都是丑数，但14不是，因为它包含质因子7。
 * 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
 */
public class 丑数 {
    public static void main(String[] args) {
        int i = GetUglyNumber_Solution(7);
        System.out.println(i);
    }

    public static int GetUglyNumber_Solution(int index) {
        if (index < 7) return 0;
        int m2 = 0, m3 = 0, m5 = 0;
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        while (list.size() < index) {
            int p2 = list.get(m2) * 2;
            int p3 = list.get(m3) * 3;
            int p5 = list.get(m5) * 5;
            int min = Math.min(p2, Math.min(p3, p5));
            list.add(min);
            if (min == p2) m2++;
            if (min == p3) m3++;
            if (min == p5) m5++;
        }
        return list.get(list.size() - 1);

    }
}
